/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.epsi.blokus.tools;

import java.text.MessageFormat;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;

/**
 * Internationalisation des textes du jeu
 * @author julien.lafont
 */
public class I18n {

    // ---------- Gestion du singleton ------------------ //
    private static I18n _instance = null;
    private ResourceBundle ressource = null;

    public static I18n getInstance()
    {
        if (_instance == null) _instance = new I18n();
        return _instance;
    }

    private I18n()
    {
        Locale locale = Locale.getDefault();
        ressource = ResourceBundle.getBundle("Internationalisation", locale);
    }

    private I18n(Locale locale)
    {
        ressource = ResourceBundle.getBundle("Internationalisation", locale);
    }

    /**
     * Récupère le texte lié à la clé donné
     * @param txt
     * @return texte traduit
     */
    public static String get(String cle)
    {
        try {
            return getInstance().ressource.getString(cle);
        }
        catch(MissingResourceException ex) {
            System.err.println(ex.getMessage());
            return cle;
        }
    }

    /**
     * Récupère le texte lié à la clé donné et effectue le remplacement de variables
     * @param txt
     * @return texte traduit avec ses variables remplacées
     */
    public static String get(String cle, String... params)
    {
        return MessageFormat.format(get(cle), params);
    }

    /**
     * Modifier la langue utilisée
     * @param l
     */
    public static void changeLocale(Locale l)
    {
        _instance = new I18n(l);
    }
}
